Skip to content
Games & CGI
  • Like
    Integrating FidelityFX into the Ego Engine

    Introduction FidelityFX Contrast Adaptive Sharpening (CAS) is a new, open source library from AMD that improves both image quality and performance for minimal integration effort. …

    5 0 12/18/2019
    AMD “Vega” 7nm Instruction Set Architecture documentation

    For most developers, it’s always worth understanding the instruction-level capabilities of any processor. Even though the instructions that get executed are usually hidden behind a …

    2 0 12/12/2019
    OCAT 1.6

    OCAT is our open source capture and analytics tool, designed to help game developers and performance analysts dig into the details of how the GPU presents …

    1 0 12/10/2019
    Vulkan Memory Allocator 2.3.0

    VMA (Vulkan Memory Allocator) is our single-header, MIT-licensed, C++ library for easily and efficiently managing memory allocation for your Vulkan® games and applications. One year …

    3 0 12/04/2019
    AGS SDK 5.4 improves handling of video memory reporting for APUs

    The AGS (AMD GPU Services) library provides game and application developers with the ability to query information about installed AMD GPUs and their driver, in …

    6 0 11/25/2019
    New Vulkan® Extensions in Driver 19.11.1

    Our latest Radeon Software Adrenalin Edition driver – 19.11.1 – was released on 4th November 2019. It comes packed with several useful Vulkan® extensions you …

    6 1 11/05/2019
    Beyond Spatial Audio: TrueAudio Next Acceleration of Steam Audio Sound Reflections with Third Order Ambisonics – Demo Video

    When creating state-of-the-art sound for a game or experience, many sound designers focus on accurate spatial 3D rendering of direct sound sources. Spatialized direct sound is important for realizing believable soundscapes that pull the player …

    6 0 10/21/2019
    Radeon™ GPU Analyzer 2.3 for Direct3D® 12 Graphics

    Earlier this year, RGA 2.2 shipped with a new mode of the command line tool that added support for Direct3D® 12 compute pipelines. RGA 2.3 …

    7 0 10/14/2019
    D3D12 Memory Allocator 1.0.0

    In July 2017 we released first public version of Vulkan Memory Allocator. Since then the library is in ongoing development, got few major releases, one …

    16 2 09/02/2019
    Discovering the structure of RDNA

    As the brilliant, tuned-in developer that you are, you are doubtlessly already aware that a little under a month ago AMD released its brand-spanking new …

    16 0 08/06/2019
    RDNA Shader Instruction Set Architecture document is now available

    This is a very short blog post to let everyone know that the RDNA Shader Instruction Set Architecture reference guide is now available. The document …

    14 4 08/02/2019
    Radeon GPU Profiler 1.6

    With this latest incarnation of RGP, we have added support for AMD’s new Radeon RX 5700 and RX 5700 XT ‘Navi’ graphics cards. Since this …

    6 0 07/29/2019
    Radeon Cauldron, the new SDK framework

    Today, we are excited to announce that we are releasing Cauldron 1.0. Cauldron is a framework for rapid prototyping that will be used in AMD …

    12 1 07/23/2019
    Radeon GPU Analyzer 2.2 for Direct3D®12 Compute

    Introduction Radeon GPU Analyzer (RGA) 2.2 introduces support for Direct3D 12 compute shaders in a new mode (-s dx12) of the command line tool. You …

    7 0 07/15/2019
    OCAT 1.5

    OCAT is our open source capture and analytics tool, designed to help game developers and performance analysts dig into the details of how the GPU …

    2 0 06/26/2019
    New Vulkan® Extensions in Driver 19.6.2

    On Monday 17th of June we released new version of our graphics driver – 19.6.2. With it we added support for 5 new Vulkan® extensions. …

    6 4 06/18/2019
    Using AMD FreeSync 2 HDR: Gamut Mapping

    Introduction This is part 3 of a series of posts on AMD FreeSync™ 2 HDR Technology (FreeSync 2 hereafter!). The first post covered color spaces …

    9 2 06/17/2019
    AMD at Digital Dragons and Vulkanised Conference

    The job of our worldwide developer technology engineers team is to directly help game developers to optimize their games, but also to educate developers by …

    6 0 06/05/2019
    Microsoft PIX Introduces AMD-Integrated Plug-In with High Frequency Counter Graph

    Microsoft® PIX is the premiere integrated performance tuning and debugging tool for Windows game developers using DirectX® 12. PIX can enable developers to debug and analyze …

    2 0 05/28/2019
    Radeon GPU Profiler 1.5.1

    Radeon GPU Profiler 1.5 We previewed the main RGP 1.5 features at GDC 2019 late last month, but didn’t set the release free because it …

    10 0 05/15/2019
    Using AMD Freesync 2 HDR: Tone Mapping

    Introduction This is part 2 of a series of posts on AMD FreeSync™ 2 HDR Technology (FreeSync 2 hereafter!). The first post covered color spaces …

    8 0 05/13/2019
    GDC 2019 Presentation Links

    If you weren’t able to attend GDC this year to catch the Advanced Graphics Techniques Tutorial Day and our Sponsored Sessions in person, or you …

    15 0 04/17/2019
    Using AMD FreeSync 2 HDR: Color Spaces

    Introduction This is going to be the first in a series of 4 blog posts covering different topics related to AMD FreeSync™ 2 HDR Technology …

    18 2 03/20/2019
    OCAT 1.4

    OCAT is our open source capture and analytics tool, designed to help game developers and performance analysts dig into the details of how the GPU …

    8 0 03/20/2019
    Radeon GPU Analyzer 2.1

    Radeon GPU Analyzer (RGA) is our offline compiler and integrated code analysis tool, supporting the high-level shading and kernel languages that are consumed by DirectX® …

    9 0 03/20/2019
    GDC 2019 Presentations

    San Francisco is the destination for the Game Developers Conference again in 2019, hosting our fine industry at the Moscone Center, March 19th to 23rd. …

    19 3 03/08/2019
    Vulkan Memory Allocator 2.2

    Introduction Vulkan Memory Allocator (VMA) is our single-header STB-like library for easily and efficiently managing memory allocation for your Vulkan games and applications. The last …

    12 0 12/18/2018
    Ryzen Threadripper for Game Development – optimising UE4 build times

    Foreword This is a guest post from Sebastian Aaltonen, co-founder of Second Order and previously senior rendering lead at Ubisoft®. Second Order published their first …

    14 0 12/17/2018
    OCAT 1.3

    OCAT is our open source capture and analytics tool, designed to help game developers and performance analysts dig into the details of how the GPU …

    2 0 12/14/2018
    Radeon GPU Profiler 1.4

    Radeon GPU Profiler 1.4 While the G in GPU stands for graphics, there are also popular SIMD programming models and associated APIs that map well …

    6 0 12/13/2018
    AMD GPU Services 5.3.0

    The AMD GPU Services (AGS) library provides game and application developers with the ability to query information about installed AMD GPUs and their driver, in …

    2 0 12/11/2018
    New Compressonator 3.1 SDK for seamless integration into asset toolchains – and more!

    We are excited to announce the release of Compressonator v3.1!  This version contains several new features and optimizations, including new installers for the SDK, CLI and …

    2 0 11/21/2018
    Optimize your engine using compute @ 4C Prague 2018

    Organised by the fine folks at Wargaming, the 4C conference was held in Prague over 2 days in early October this year, bringing attendees and …

    14 1 11/05/2018
    Radeon GPU Profiler 1.3.1

    Radeon GPU Profiler 1.3.1 RGP 1.3.1 is a hotfix release to keep compatibility with an upcoming Radeon Adrenalin Edition graphics driver. That driver descends from …

    7 0 10/11/2018
    OCAT 1.2

    OCAT, our open source capture and analytics tool, has come a really long way since the 1.1 release around this time last year. The focus …

    10 2 09/19/2018
    Vulkan Memory Allocator 2.1

    Introduction We released Vulkan Memory Allocator 1.0 (VMA) back in July last year, but we’ve been remiss in posting about the progress of the library …

    8 1 09/10/2018
    Radeon GPU Profiler 1.3

    Radeon GPU Profiler 1.3 First, happy birthday to RGP! We released 1.0 publicly almost exactly a year ago at the time of writing, something I’ve …

    10 0 08/31/2018
    Decoding Radeon Vulkan versions

    There are traditionally just two hard problems in computer science — naming things, cache invalidation, and off-by-1 errors — but I’ve long thought that there …

    9 2 08/02/2018
    Porting your engine to Vulkan or DX12

    Adam Sawicki, a member of AMD RTG’s Game Engineering team, has spent the best part of a year assisting one of the world’s biggest game …

    19 4 07/06/2018
    Understanding GPU context rolls

    If you’ve ever heard the term “context roll” in the context of AMD GPUs — I’ll do that a lot in this post, sorry in …

    23 3 06/29/2018
    Microsoft PIX Introduces AMD-Integrated Plug-In with Occupancy Data Graph

    Microsoft PIX is the premiere integrated performance tuning and debugging tool for Windows game developers using DirectX 12.  PIX enables developers to debug and analyze …

    3 0 06/26/2018
    GDC 2018 Presentation Links

    With GDC 2018 done and dusted, we thought it’d be valuable to reemphasise that all of the presented content from the Advanced Graphics Techniques Tutorial …

    6 0 06/07/2018
    AMD GPU Services 5.2.0

    The AMD GPU Services (AGS) library provides game and application developers with the ability to query information about installed AMD GPUs and their driver, in …

    6 0 05/31/2018
    Radeon GPU Profiler 1.2

    Radeon GPU Profiler 1.2 At GDC 2018 we talked about a new version of RGP that would interoperate with RenderDoc, allowing the two tools to …

    9 0 05/25/2018
    Compressonator V3.0 Release Brings Powerful New 3D Model Features

    Compressonator is a set of tools that allows artists and developers to work easily with compressed assets and easily visualize the quality impact of various …

    6 0 05/14/2018
    TrueAudio Next Version 1.2 Now Posted to Github

    We have posted the version 1.2 update to the TrueAudio Next open-source library to Github. It is available here. This update has a number of …

    11 2 05/10/2018
    Reducing Vulkan API call overhead

    Vulkan™ is designed to have significantly smaller CPU overhead compared to other APIs like OpenGL®. This is achieved by various means – the API is …

    28 0 04/26/2018
    First steps when implementing FP16

    Introduction Half-precision (FP16) computation is a performance-enhancing GPU technology long exploited in console and mobile devices not previously used or widely available in mainstream PC …

    12 0 04/20/2018
    GDC 2018 Presentation: Real-Time Ray-Tracing Techniques for Integration into Existing Renderers

    Real Time Ray Tracing was one of the hottest topics last week at GDC 2018. In this presentation, AMD Software Development Engineer and architect of Radeon …

    14 0 03/29/2018
    Real-Time Ray Tracing with Radeon ProRender

    The level of visual detail required of CAD models for the automotive industry or the most advanced film VFX requires a level of visual accuracy …

    33 4 03/20/2018
    GDC 2018 Presentations

    If you’re into the state of the art in games, especially real-time gaming graphics, your eyes will undoubtedly be on Moscone Center in San Francisco, …

    13 5 02/19/2018
    TrueAudio Next is Now Integrated into Steam Audio

    The long wait is over. The GPU processing power of TrueAudio Next (TAN) has now been integrated into Steam Audio from Valve (Beta 13 release). …

    8 3 02/09/2018
    Radeon GPU Profiler 1.1.1

    Radeon GPU Profiler 1.1.1 With GDC 2018 getting ever closer, we wanted to get one last minor release of RGP out before things get hectic …

    5 0 02/07/2018
    Radeon GPU Profiler 1.1.0

    Radeon GPU Profiler 1.1.0 It feels like just last week that we released Radeon GPU Profiler (RGP) 1.0.3 but my calendar says almost 2 months …

    20 0 12/12/2017
    Deferred Path Tracing By Enscape

    Insights from Enscape as to how they designed a renderer that produces path traced real time global illumination and can also converge to offline rendered image quality

    25 0 12/06/2017
    Compressonator V2.7 Release adds cross platform support and 3D Model compression with glTF v2.0

    We are excited to announce the release of Compressonator V2.7! This version contains several new features and optimizations, including: Cross Platform Support Due to popular demand, …

    5 1 11/27/2017
    Radeon GPU Profiler 1.0.3

    Radeon GPU Profiler 1.0.3 A couple of months on from the release of 1.0.2, we’ve fully baked and sliced 1.0.3 for your low-level DX12- and …

    11 0 10/18/2017
    AMD GPU Services 5.1.1

    The AMD GPU Services (AGS) library provides game and application developers with the ability to query information about installed AMD GPUs and their driver, in …

    7 1 09/27/2017
    CPU core count detection on Windows

    Due to architectural differences between Zen and our previous processor architecture, Bulldozer, developers need to take care when using the Windows® APIs for processor and core enumeration. …

    20 2 09/14/2017
    Stable barycentric coordinates

    The AMD GCN Vulkan extensions allow developers to get access to some additional functionalities offered by the GCN architecture which are not currently exposed in the Vulkan API. One of these is the ability to access the barycentric coordinates at the fragment-shader level.

    10 0 08/30/2017
    Radeon GPU Profiler 1.0.2

    Thanks (again!) Before we dive into a run over the release notes for the 1.0.2 release of Radeon GPU Profiler, we’d like to thank everyone …

    14 0 08/22/2017
    AMD Vega ISA (Instruction Set Architecture) documentation

    Understanding the instruction-level capabilities of any processor is a worthwhile endeavour for any developer writing code for it, even if the instructions that get executed …

    30 7 08/10/2017
    Understanding Vulkan objects

    An important part of learning the Vulkan API – just like any other API – is to understand what types of objects are defined in it, what they represent and how they relate to each other. To help with this, we’ve created a diagram that shows all of the Vulkan objects and some of their relationships, especially the order in which you create one from another.

    72 5 08/07/2017
    Open-source Radeon ProRender

    Summary In this blog post we are announcing the open-source availability of the Radeon™ ProRender renderer, an implementation of the Radeon ProRender API. We will give …

    26 1 07/30/2017
    Radeon GPU Profiler 1.0

    Introduction and thanks Effective GPU performance analysis is a more complex proposition for developers today than it ever has been, especially given developments in how …

    28 8 07/26/2017
    TressFX 4 Simulation Changes

    TressFX 4 introduces a number of improvements. This blog post focuses on three of these, all of which are tied to simulation: Bone-based skinning Signed distance …

    17 1 07/20/2017
    Vulkan Memory Allocator 1.0

    Full application control over GPU memory is one of the major differentiating features of the newer explicit graphics APIs such as Vulkan® and Direct3D® 12. …

    13 0 07/10/2017
    Compressonator V2.6 Release Adds HDR Tonemapping Compression, New Image Analysis Features

    We are excited to announce the release of Compressonator V2.6. This version contains several new features and optimizations, including: Adaptive Format Conversion for general transcoding operations …

    5 0 07/03/2017
    Vega Frontier : How to for developers

    When getting a new piece of hardware, the first step is to install the driver. You can see how to install them for the Radeon …

    4 0 06/29/2017
    Vega Frontier : How to install the driver

    In this blog we will go through the installation process of the driver for your new Radeon Vega Frontier card. We will go through the …

    6 5 06/29/2017
    Optimizing GPU occupancy and resource usage with large thread groups

    When using a compute shader, it is important to consider the impact of thread group size on performance. Limited register space, memory latency and SIMD occupancy each affect shader performance in different ways. This article discusses potential performance issues, and techniques and optimizations that can dramatically increase performance if correctly applied.

    66 7 05/24/2017
    DirectX12 Hardware Counter Profiling with Microsoft PIX and the AMD Plugin

    The AMD Developer Tools team is thrilled to announce the availability of the AMD plugin for Microsoft’s PIX for Windows tool. PIX is a performance …

    12 0 05/17/2017
    CodeXL 2.3 is released!

    A new version of the CodeXL open-source developer tool is out! Here are the major new features in this release: CPU Profiling Support for AMD …

    7 0 05/10/2017
    Content Creation Tools and Multi-GPU

    When it comes to multi-GPU (mGPU), most developers immediately think of complicated Crossfire setups with two or more GPUs and how to make their game …

    11 0 05/05/2017
    Capsaicin and Cream developer talks at GDC 2017

    Introduction Shortly after our Capsaicin and Cream event at GDC this year where we unveiled Radeon RX Vega, we hosted a developer-focused event designed to …

    6 0 04/05/2017
    Compressonator V2.5 Release Adds Enhanced HDR Support

     BC6 HDR Compression The BC6H codec has been improved and now offers better quality then previous releases, along with support for both 16 bit Half …

    6 0 03/29/2017
    Live VGPR Analysis with Radeon GPU Analyzer

    This article explains how to use Radeon GPU Analyzer (RGA) to produce a live VGPR analysis report for your shaders and kernels. Basic RGA usage …

    15 7 03/21/2017
    The Radeon Loom Stitching Pipeline

    I’m Mike Schmit, Director of Software Engineering with the Radeon Technologies Group at AMD. I’m leading the development of a new open-source 360-degree video-stitching framework …

    10 3 03/15/2017
    AMD LiquidVR MultiView Rendering in Serious Sam VR

    AMD LiquidVR MultiView Rendering in Serious Sam VR with the GPU Services (AGS) Library AMD’s MultiView Rendering feature reduces the number of duplicated object draw …

    10 1 02/27/2017
    TrueAudio Next Demo and Paper at GameSoundCon

    In 2016, AMD brought TrueAudio Next to GameSoundCon. GameSoundCon was held Sept 27-28 at the Millennium Biltmore Hotel in Los Angeles. GameSoundCon caters to game …

    7 2 02/24/2017
    Profiling video memory with Windows Performance Analyzer

    Budgeting, measuring and debugging video memory usage is essential for the successful release of game titles on Windows. As a developer, this can be efficiently achieved with the …

    13 1 02/09/2017
    GDC 2017 Presentations

    Another year, another Game Developer Conference! GDC is held earlier this year (27 February – 3 March 2017) which is leaving even less time for …

    16 5 02/01/2017
    AGS 5.0 – Shader Compiler Controls

    With the launch of AGS 5.0 developers now have access to the shader compiler control API.  Here’s a quick summary of the how and why…. Background …

    18 0 01/12/2017
    Optimizing Terrain Shadows

    There are many games out there taking place in vast environments. The basic building block of every environment is height-field based terrain – there’s no …

    12 2 12/15/2016
    Leveraging asynchronous queues for concurrent execution

    Understanding concurrency (and what breaks it) is extremely important when optimizing for modern GPUs. Modern APIs like DirectX® 12 or Vulkan™ provide the ability to …

    41 12 12/01/2016
    Selecting the Best Graphics Device to Run a 3D Intensive Application

    Summary Many Gaming and workstation laptops are available with both (1) integrated power saving and (2) discrete high performance graphics devices. Unfortunately, 3D intensive application …

    11 2 11/16/2016
    Vulkan and DOOM

    This post is taking a look at some of the interesting bits of helping id Software with their DOOM® Vulkan™ effort, from the perspective of …

    18 1 11/10/2016
    Implementing LiquidVR™ Affinity Multi-GPU support in Serious Sam VR

    This blog is guest authored by Croteam developer Karlo Jez and he will be giving us a detailed look at how Affinity Multi-GPU support was …

    13 1 10/31/2016
    AMD Driver Symbol Server

    When opening a 64-bit crash dump you will find that you will not necessarily get a sensible call stack. This is because 64-bit crash dumps …

    38 9 10/27/2016
    Vulkan barriers explained

    Vulkan™’s barrier system is unique as it not only requires you to provide what resources are transitioning, but also specify a source and destination pipeline …

    35 11 10/18/2016
    VDR Follow Up – Tonemapping for HDR Signals

    This is the third post in the follow up series to my prior GDC talk on Variable Dynamic Range. Prior posts covered dithering, today’s topic …

    11 0 10/05/2016
    Using RapidFire for Virtual Desktop and Cloud Gaming

    Virtual desktop infrastructure systems and cloud gaming are increasingly gaining popularity thanks to an ever more improved internet infrastructure. This gives more flexibility to the …

    10 0 09/27/2016
    AMD TrueAudio Next and CU Reservation – What is the Context?

    As noted in my previous blog, new innovations in virtual reality have spearheaded a renewed interest in audio processing, and many new as well as …

    28 0 09/26/2016
    Anatomy Of The Total War Engine: Part V

    This week marks the last in the series of our regular Warhammer Wednesday blog posts. We’d like to extent our thanks to Creative Assembly’s Lead …

    13 0 08/22/2016
    The Importance of Audio in VR

    Audio Must be Consistent With What You See Virtual reality demands a new way of thinking about audio processing. In the many years of history …

    11 8 08/16/2016
    Anatomy Of The Total War Engine: Part IV

    Happy Warhammer Wednesday! This week Creative Assembly’s Lead Graphics Programmer Tamas Rabel talks about how Total War: Warhammer utilized asynchronous compute to extract some extra …

    8 0 08/16/2016
    Anatomy Of The Total War Engine: Part III

    It’s Wednesday, so we’re continuing with our series on Total War: Warhammer. Here’s Tamas Rabel again with some juicy details about how Creative Assembly brought …

    16 2 08/10/2016
    Blazing CodeXL 2.2 is here!

    A new release of the CodeXL open-source developer tool is out! Here’s the hot new stuff in this release: New platforms support Support Linux systems …

    22 5 08/08/2016
    Anatomy Of The Total War Engine: Part II

    We’re back again on this fine Warhammer Wednesday with more from Tamas Rabel, Lead Graphics Programmer on the Total War series. In last week’s post …

    7 1 08/03/2016
    Anatomy Of The Total War Engine: Part I

    For the next few weeks we’ll be having a regular feature on GPUOpen that we’ve affectionately dubbed “Warhammer Wednesdays”. We’re extremely lucky to have Tamas Rabel, …

    13 10 07/27/2016
    Texel Shading

    Game engines do most of their shading work per-pixel or per-fragment. But there is another alternative that has been popular in film for decades: object …

    25 3 07/21/2016
    Vulkan Device Memory

    EDIT: 2016/08/08 – Added section on Targeting Low-Memory GPUs This post serves as a guide on how to best use the various Memory Heaps and …

    41 2 07/21/2016
    Performance Tweets Series: Root signature & descriptor sets

    Before Direct3D® 12 and Vulkan™, resources were bound to shaders through a “slot” system. Some of you might remember when hardware did have only very …

    9 8 07/14/2016
    Performance Tweets Series: Multi-GPU

    Multi-GPU systems are much more common than you might think. Most of the time, when someone mentions mGPU, you think about high-end gaming machines with …

    14 2 07/05/2016
    Compressonator v2.3 Release Delivers ASTC, ETC2 Codec Support and GPU Rendered Image Views

    Compressonator is a set of tools to allow artists and developers to more easily create compressed texture image assets and easily visualize the quality impact …

    10 2 06/27/2016
    Performance Tweets Series: Debugging & Robustness

    Prior to explicit graphics APIs a lot of draw-time validation was performed to ensure that resources were synchronized and everything set up correctly. A side-effect of this robustness …

    6 0 06/22/2016
    Performance Tweets Series: Rendering and Optimizations

    Direct3D® 12 and Vulkan™ significantly reduce CPU overhead and provide new tools to better use the GPU. For instance, one common use case for the …

    4 0 06/14/2016
    Performance Tweets Series: Streaming & Memory Management

    As promised, we’re back and today I’m going to cover how to get resources to and from the GPU. In the last post, we learned …

    6 0 06/07/2016
    CodeXL 2.1 is out and Searing hot with Vulkan

    A new CodeXL release is out! For the first time the AMD Developer Tools group worked on this release on the CodeXL GitHub public repository, …

    20 0 05/31/2016
    ShadowFX Effect Library for DirectX 12

    Today, we are excited to announce that we are releasing an update for ShadowFX that adds support for DirectX® 12. Features Different shadowing modes Union of …

    13 1 05/26/2016
    Turbocharge your Graphics and GPU Compute Applications with GPUPerfAPI

    Achieving high performance from your Graphics or GPU Compute applications can sometimes be a difficult task. There are many things that a shader or kernel …

    15 3 05/25/2016
    GCN Shader Extensions for Direct3D and Vulkan

    The GCN architecture contains a lot of functionality in the shader cores which is not currently exposed in current APIs like Vulkan™ or Direct3D® 12. One …

    23 12 05/24/2016
    AMD DOPPEngine – Post Processing on Your Desktop in Practice

    A Complete Tool to Transform Your Desktop Appearance After introducing our Display Output Post Processing (DOPP) technology, we are introducing a new tool to change …

    37 0 05/23/2016
    Fast compaction with mbcnt

    Compaction is a basic building block of many algorithms – for instance, filtering out invisible triangles as seen in Optimizing the Graphics Pipeline with Compute. …

    15 8 05/20/2016
    TressFX 3.1

    We are releasing TressFX 3.1. Our biggest update in this release is a new order-independent transparency (OIT) option we call “ShortCut”. We’ve also addressed some of …

    10 4 05/19/2016
    GeometryFX 1.2 – Cluster Culling

    Today’s update for GeometryFX introduces cluster culling. Previously, GeometryFX worked on a per-triangle level only. With cluster culling, GeometryFX is able to reject large chunks …

    8 7 05/18/2016
    Unlock the Rasterizer with Out-of-Order Rasterization

    Full-speed, out-of-order rasterization If you’re familiar with graphics APIs, you’re certainly aware of the API ordering guarantees. At their core, these guarantees mean that if …

    17 6 05/17/2016
    AMD FireRays 2.0 – Open Sourcing and Customizing Ray Tracing for Efficient Hardware Platforms Support

    A New Milestone After the success of the first version, FireRays is moving to another major milestone. We are open sourcing the entire library which …

    31 2 05/16/2016
    Slides from our “The most common Vulkan mistakes” talk

    Last week, we organized a two hours-long talk at University of Lodz in Poland where we discussed the most common mistakes we come across in Vulkan applications. Dominik Witczak, …

    8 5 05/13/2016
    Compressonator (AMD Compress) is Going Open Source

    We are very pleased to be announcing that AMD is open-sourcing one of our most popular tools and SDKs.  Compressonator (previously released as AMD Compress …

    17 0 05/12/2016
    AMD Crossfire API

    Gaming at optimal performance and quality at high screen resolutions can sometimes be a demanding task for a single GPU. 4K monitors are becoming mainstream and gamers …

    19 5 05/05/2016
    AMD GPU Services, an introduction

    If you have supported Crossfire™ or Eyefinity™ in your previous titles, then you have probably already used our AMD GPU Services (AGS) library.  A lot of …

    17 1 04/28/2016
    Performance Tweets Series: Resource Creation

    Resource creation and management has changed dramatically in Direct3D® and Vulkan™ compared to previous APIs. In older APIs, memory is managed transparently by the driver. …

    9 0 04/20/2016
    CodeXL 2.0 is Here and Open Source

    CodeXL major release 2.0 is out! It is chock-full of new features and a drastic change in the CodeXL development model: CodeXL is now open …

    26 6 04/19/2016
    VDR Follow Up – Grain and Fine Details

    The prior post in this series established a base technique for adding grain, and now this post is going to look at very subtle changes to …

    3 0 04/13/2016
    Performance Tweets Series: Shaders, Threading, Compiling

    Welcome back to our performance & optimization series. Today, we’ll be looking more closely at shaders. On the surface, it may look as if they …

    12 1 04/06/2016
    VDR Follow Up – Fine Art of Film Grain

    This is the first of a series of posts expanding on the ideas presented at GDC in the Advanced Techniques and Optimization of VDR Color …

    8 1 04/04/2016
    GDC 2016 Presentations Available

    The Game Developer Conference 2016 was an event of epic proportions. Presentations, tutorials, round-tables, and the show floor are only one part of the story …

    9 2 03/30/2016
    GCN Memory Coalescing

    This post describes how GCN hardware coalesces memory operations to minimize traffic throughout the memory hierarchy. The post uses the term “invocation” to describe one …

    17 2 03/21/2016
    Delta Color Compression Overview

    Bandwidth is always a scarce resource on a GPU. On one hand, hardware has made dramatic improvements with the introduction of ever faster memory standards …

    26 13 03/14/2016
    Using the Vulkan™ Validation Layers

    Vulkan™ provides unprecedented control to developers over generating graphics and compute workloads for a wide range of hardware, from tiny embedded processors to high-end workstation GPUs with wildly different …

    45 6 03/09/2016
    GDC 2016 Presentations

    The Game Developer Conference 2016 (GDC16) is held March 14-18 in the Moscone Center in San Francisco. This is the most important event for game developers, …

    36 0 02/29/2016
    Performance Tweets series: Barriers, fences, synchronization

    Welcome back to our DX12 series! Let’s dive into one of the hottest topics right away: synchronization, that is, barriers and fences! Barriers A barrier is …

    15 1 02/22/2016
    Vulkan Renderpasses

    Vulkan™ is a high performance, low overhead graphics API designed to allow advanced applications to drive modern GPUs to their fullest capacity. Where traditional APIs …

    60 0 02/16/2016
    Say Hello to a New Rendering API in Town!

    Imagine that you were asked one day to design an API with bleeding-edge graphics hardware in mind. It would need to be as efficient as …

    45 3 02/16/2016
    Performance Tweets Series: Command lists

    Hello and welcome to our series of blog posts covering performance advice for Direct3D® 12 & Vulkan™. You may have seen the #DX12PerfTweets on Twitter, and …

    11 1 02/10/2016
    Fetching From Cubes and Octahedrons

    For GPU-side dynamically generated data structures which need 3D spherical mappings, two of the most useful mappings are cubemaps and octahedral maps. This post explores …

    10 0 02/04/2016
    It’s Time to Open up the GPU

    I have met enough game developers in my professional life to know that these guys are among the smartest people on the planet. Those particular individuals will go …

    413 34 01/26/2016
    Up and Running with CodeXL Analyzer CLI

    About CodeXL Analyzer CLI CodeXL Analyzer CLI is an offline compiler and performance analysis tool for OpenCL™ kernels, DirectX® shaders and OpenGL® shaders. Using CodeXL …

    24 0 01/26/2016
    Create Your own GPU PerfStudio DirectX® 12 Plugin

    GPU PerfStudio supports DirectX® 12 on Windows® 10 PCs. The current tool set for DirectX 12 comprises of an API Trace, a new GPU Trace …

    13 0 01/26/2016
    Maxing out GPU usage in nBodyGravity

    Today we’re going to take a look at how asynchronous compute can help you to get the maximum out of a GPU. I’ll be explaining …

    28 6 01/26/2016
    Have You Tootled Your 3D Models?

    What’s New With the recent adoption of new APIs such as DirectX® 12 and Vulkan™, we are seeing renewed interest in an older tool.  AMD …

    37 0 01/26/2016
    Optimized Reversible Tonemapper for Resolve

    A typical problem with MSAA Resolve mixed with HDR is that a single sample with a large HDR value can over-power all other samples, resulting …

    18 2 01/26/2016

    VDR Follow Up – Tonemapping for HDR Signals

    Posted on October 5, 2016 by Timothy Lottes
    HDR, HDR10, Tonemapping, VDR

    This is the third post in the follow up series to my prior GDC talk on Variable Dynamic Range. Prior posts covered dithering, today’s topic is a collection of practical advice on adapting a game’s tonemapping pipeline to both traditional display signals and new HDR output signals.

    Variable Peak Brightness

    We can source baseline HDR TV properties directly from the Ultra HD Premium certification requirements: OLED displays must reach more than 540 nits, and LCD displays must reach more than 1000 nits. TVs prior to supporting HDR inputs often exceeded the OLED 540 nit baseline. As of this post HDR LCD TVs tend to exceed 1000 nits a little but not by a full stop, and can even vary temporally. The certification requirements do not include any color calibration requirements nor do they include any temporal requirements on sustaining peak brightness. Reaching peak brightness works against practical consumer power and possibly thermal constraints. For example the edge-lit Samsung UE55KS8000 HDR TV as reviewed by HDTVTest reached 1420 nits prior to calibration “needing at least 7 seconds to ramp up from circa-700 nits to 1400 nits. The display would then hang onto 1400 nits for a further 13 seconds, before peak luminance slowly dropped to 520 nits” (quoting from the review).

    Typical consumer HDR TVs can range from 0 to a little over 1 stop brighter than high quality pre-HDR TVs. Note that ambient room lighting can range roughly 15 stops from night (with no lights on) to day time (with unblocked windows). To place this in context in terms of perceived brightness, an older non-HDR display at night can appear many times brighter than an HDR display in the day. So HDR and non-HDR displays both share the exact same content authoring challenge, users will experience the game in both low contrast (aka LDR) and high contrast (aka HDR) viewing conditions on both kinds of displays.

    While HDR signals are absolute signals from 0 to 10000 nits, the Ultra HD Premium certification does not include any fixed tonemapper algorithm. It is up to the TV to decide how to map the 0 to 10000 nit input range into the limited output capacity of the HDR TV. The TV’s tonemapper choice can have a variable effect on the perceived brightness of a video signal. Some TVs can bias the signal darker during tonemapping to increase the contrast between peak brights and midtones.

    The above factors point to the requirement of having an easily accessible in-game exposure control .

    Ideally the user would be able to adjust exposure while looking at the game as paused during play (with no darkening or full-screen effects applied). Exposure range should be +/- many stops to cover the difference between night and day viewing.

    HDR Signal = Two Part Tonemapping

    HDR signals have an absolute scale, and HDR10 signals must fill the full 0 to 10000 nit output range. This means that games targeting HDR signals get a two part tonemapping. First the game must tonemap the larger range of render output into this 0 to 10000 nit signal range. Then the TV will map the 0 to 10000 nit range into the TV relative range. Lets break this down into some numerical examples, and disregard gamut and dithering issues for now.

    Traditional Non-HDR Example : Game renders to {0 to 65504} (peak FP16 value). Game then tonemaps that to {0 to 1} which roughly represents say {0 to 500 nits} on a good non-HDR TV. Traditional non-HDR signals are display relative scale. Finally the game transforms the linear output to sRGB or Gamma 2.2 or Rec709 (depending on desired target) followed by writing to the back buffer.

    HDR Example : Let’s assume the HDR output is still {0 to 1}, and this now represents {0 to 10000 nits}. This aligns with APIs which support a 32-bit 10:10:10:2 output with PQ transform already applied by the application. This requires roughly a 500 nit / 10000 nit or 1/20 scale factor. Game renders to {0 to 65504}. Then tonemaps that to {0 to 1} using output mid-level ( midOut in my Advanced Techniques and Optimization of HDR Color Pipelines GDC presentation) multiplied by this 1/20 scale factor, and finishes by applying the linear to PQ transform followed by writing to the back buffer.

    So both the non-HDR and HDR paths at this point are effectively the same shader code, with the exception that the HDR path requires a more expensive PQ transform at the end (instead of the faster sRGB output for example).

    Note the magnitude of this 1/20 scale factor is a little over 4 stops. That is a rather large change. This means that having an in-game tonemapper which, outside the highlight compression, maintains RGB ratios (as in my GDC presentation) is critical. Otherwise the in-game switch to/from HDR signal output will do bad things like effect saturation in the darks, etc. This will be a problem with traditional tonemappers which apply curves separately to R, G, and B channels.

    The midOut output mid-level in my GDC presentation is also the in-game exposure control from the prior section. So switching in and out of HDR signal mode is simply applying an extra hidden scaling on that exposure control.

    In practice this 1/20 factor won’t be exactly 1/20. The way to come up with the correct scaling factor is to have one machine with a calibrated non-HDR output serve as a “master”. Then take a second machine driving an HDR output on the same content and manually find the scale factor which best matches midtones to the “master” across a collection of HDR TVs. This is required because each TV can have a different tonemapper (with different hidden internal exposure bias which might even change based on TV user controls). The result will be a good initial estimate. And in practice the individual user will fine tune using the in-game exposure control .

    Managing the HDR and Non-HDR Mode Switch

    When windowed, the game outputs a non-HDR signal. When the game transitions to exclusive full-screen and enables HDR, the display driver is going to do a hidden mode switch during the v-blank interval, and then start introducing HDR meta-data into the non-visible part of the display signal. The TV sees the HDR meta-data and responds by interpreting the signal as an HDR signal.

    Assuming the TV has the same peak brightness in both the HDR and non-HDR modes, assuming the desktop when windowed is not bright (which would introduce global dimming), and assuming the 1/20 scale factor calibration works for the TV, the output in both the HDR and non-HDR mode should look similar (at least in the midtones), and both will look like they have “HDR”. The differences will be as follows,

    • Changes in Gamut.
    • HDR mode will affect brights and highlights differently than the non-HDR mode. In HDR mode the game will look different depending on TV tonemapper. Also techniques from my GDC talk, like maintaining saturation in highlight compression using improved crosstalk, cannot be applied in HDR mode because the TV is doing the majority of highlight compression.
    • HDR mode might also affect darks depending on if the TV’s tonemapper does contrast adjustments.

    One obvious user-interface challenge with the HDR mode switch is that the in-game exposure control as described is overloaded for both night to day viewing conditions, and fine tuning the non-HDR to HDR bias for the TV. A suggestion would be to split this out into two user-facing controls: “exposure” and “HDR exposure bias” (which would default to the 1/20 scale factor). Best to keep both those controls working in stops (i.e. log2 scale) so movement on the control is perceptually uniform.

    I didn’t touch on Gamut issues in this post as that is large topic which deserves a separate post. Until next time . . .

    Timothy Lottes is a member of the Graphics Performance R&D team at AMD. Links to third party sites are provided for convenience and unless explicitly stated, AMD is not responsible for the contents of such linked sites and no endorsement is implied.

    0 Comments

    Comment

    Leave a Reply

    • Terms and Conditions
    • /
    • Privacy
    • /
    • Cookie Policy
    • /
    • Trademarks
    ©2019 Advanced Micro Devices, Inc. OpenCL™ and the OpenCL™ logo are trademarks of Apple, Inc., used with permission by Khronos.
    采集